﻿#include "Unit1.h"
#include "Math.h"
#include "const.cpp"
// ---------------------------------------------------------------------------
double G = GSL_CONST_MKS_GRAVITATIONAL_CONSTANT ;
// ---------------------------------------------------------------------------
// Ускорение свободного падения g
// ---------------------------------------------------------------------------

 void __fastcall TForm1::BitBtn15Click(TObject *Sender){
	double E24,E24a,R,M,h,Rh,R1,h1,M1,Mn;
	h  = Edit18->Text.ToDouble();
	Mn = Edit17->Text.ToDouble();
	E24 = Edit24->Text.ToDouble();
	R = Edit16->Text.ToDouble();
	if  (E24>0) {
	E24a =  pow(10.0,E24);
	}
	else  {
	E24a = 1 ;
	}
	M = E24a * Mn ;
	if ( ComboBox8->ItemIndex == 0) {
	M1 = M;
	}
	else if ( ComboBox8->ItemIndex  == 1) {
	M1 = M * 1000;
	}
	if ( ComboBox5->ItemIndex == 0) {
	h1 = h;
	}
	else if ( ComboBox5->ItemIndex  == 1){
		if (h >0 ) {
		h1 = 1000.0 * h;
		}
		else {}

	}
	else if (ComboBox5->ItemIndex == 2) {
		if (h >0 ) {
		h1 = 149597870.691 * h;
		}
		else {}

	}
	if ( ComboBox2->ItemIndex == 0) {
	R1 =  R;
	}
	else if ( ComboBox2->ItemIndex == 1){
	R1 = 1000.0 * R;
	}
	if (h1 > 0) {
	Rh = R1 + h1;
	}
	else{
	Rh = R1 ;
	}
	Edit19->Text = G * (M1 / pow(Rh,2.0));   //Ускоре́ние свобо́дного паде́ния g
	Edit20->Text = G * (M1 / pow(R1,2.0));   //Ускоре́ние свобо́дного паде́ния g
	return;
	}

// ---------------------------------------------------------------------------
// космическая скорость

 void __fastcall TForm1::BitBtn16Click(TObject *Sender){
	double E27,R,M,R1,M1,E27a,G2;
	E27 = Edit27->Text.ToDouble();
	R = Edit26->Text.ToDouble();
	M = Edit25->Text.ToDouble();
	R1 = R * 1000;
	M1 = M* 1000;
	E27a = pow (10,E27);
	G2 = 2 * G;
	if (ComboBox6->ItemIndex == 0) { // блок при R метрах
		if (ComboBox7->ItemIndex == 0)  {
			if (E27>0)	{
			Edit29->Text = pow((G*((M*E27a)/R)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*((M*E27a)/R)),0.5); // Первая космическая скорость
			}
			else	{
			Edit29->Text = pow((G*(M/R)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*(M/R)),0.5); // Первая космическая скорость
			}
			return;
		}
		else if (ComboBox7->ItemIndex == 1) {   // при M Тоннах
			if (E27>0)	{
			Edit29->Text = pow((G*((M1*E27a)/R)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*((M1*E27a)/R)),0.5); // Первая космическая скорость
			}
			else	{
			Edit29->Text = pow((G*(M1/R)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*(M1/R)),0.5); // Первая космическая скорость
			}
			return;
        }
		return;
	}
	else if (ComboBox6->ItemIndex == 1) {  //блок при R километрах
		if (ComboBox7->ItemIndex == 0)  {
			if (E27>0)	{
			Edit29->Text = pow((G*((M*E27a)/R1)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*((M*E27a)/R1)),0.5); // Первая космическая скорость
			}
			else	{
			Edit29->Text = pow((G*(M/R1)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*(M/R1)),0.5); // Первая космическая скорость
			}
			return;
			}
		else if (ComboBox7->ItemIndex == 1) {     // при M Тоннах
			if (E27>0)	{
			Edit29->Text = pow((G*((M1*E27a)/R1)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*((M1*E27a)/R1)),0.5); // Первая космическая скорость
			}
			else	{
			Edit29->Text = pow((G*(M1/R1)),0.5); // Первая космическая скорость
			Edit28->Text = pow((G2*(M1/R1)),0.5); // Первая космическая скорость
			}
			return;
			}
		return;
	}
	return;
}
void __fastcall TForm1::BitBtn18Click(TObject *Sender){
	double g,R,R1;
	g = Edit30->Text.ToDouble();
	R = Edit26->Text.ToDouble();
	R1 = R* 1000;
	if (ComboBox6->ItemIndex == 1)	{
	Edit29->Text = pow((g*R1),0.5);
	Edit28->Text = pow(2.0,0.5)*pow((g*R1),0.5);
	}
	else if (ComboBox6->ItemIndex == 0)	{
	Edit29->Text = pow((g*R),0.5);
	Edit28->Text = pow(2.0,0.5)*pow((g*R),0.5);
	}
	return;
 }
//---------------------------------------------------------------------------

